Software applications ranging from hand-held device-based, desktop-based, and Enterprise-based software applications have evolved in complexity. As the complexity of software increases, so does the demand for more powerful hardware components. As a result, energy consumption has gone to very high levels. For example, Enterprise applications typically comprise different interdependent and complex software applications deployed over multiple servers. In most cases, services might be published and consumed across enterprises. Consequently, energy consumption due to execution of Enterprise applications has increased to very large scale. As a result of this increase in energy consumption, organizations are spending huge amounts of money on energy costs and software applications leave a big carbon foot print. Determining discrete energy consumption of an individual application has become a big challenge and, consequently, optimizing an application to reduce its energy consumption has become an equally big challenge as well.
In the case of hand held devices, laptop computers, and tablet computers, or the like, applications, if not properly designed or tuned to conserve energy, will tend to drain the battery quickly. Thick Client applications, standalone desktop applications, and applications, which can be installed in hand held devices, personal computers, or the like, can also cause excessive power consumption if not properly tuned or designed. Hardware components are the primary energy consumers, but the energy consumption is driven by the software application(s) using these components.
Leading energy management applications in the industry include, for example, applications developed by Intel Corp. based on research on Software Power Estimation and Optimization, applications developed by Cisco as documented by Cisco's Review and Results of Network Energy Efficiency, IBM's Tivoli Monitor, PRELYTIS, and applications based on IMB's research on Green Applications: software applications that optimize energy usage. Most of these conventional solutions focus on hardware level energy monitoring, operating system tweaking, or the like to optimize energy consumption. These solutions, however, do not address the following areas to reduce carbon footprint by a single software application: (1) Software application level energy profiling across a designed work load across various phases; (2) Identification of intensive energy consumption areas by software application due to specific hardware utilization (like RAM, CPU, Hard disk, etc.); (3) Creating an Energy Consumption Model by the software application; (4) Developing a method to determine software application efficiency across different load conditions and rating method; and/or (5) Application Tuning, Capacity Planning, accurate hardware matching, etc., from the software application perspective; or the like.
The embodiments disclosed herein are directed toward overcoming one or more of the problems discussed above.